/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.gym.manager.interfaz;

import com.gym.manager.mundo.Ejercicio;
import com.gym.manager.mundo.Rutina;
import java.io.IOException;
import java.util.Vector;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.ChoiceGroup;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;

/**
 *
 * @author Sergio
 */
public class FormaEditarRutina extends Form implements ItemStateListener, CommandListener {

    private Command agregarObjetivo;
    private Command agregarEjercicio;
    private Command agregarObservaciones;
    private Command terminar;
    private ChoiceGroup objetivos;
    private ChoiceGroup ejercicios;
    private ChoiceGroup observaciones;
    private TextField rutina;
    private MIDletGymManager principal;
    private Image imagenTemp;
    private Rutina rut;
    private int a, b, c;

    FormaEditarRutina(MIDletGymManager interfaz, Rutina rut, int a, int b, int c) {
        super("Edit workout");

        principal = interfaz;
        this.rut = rut;
        setCommandListener(this);
        agregarObjetivo = new Command("Add goal", Command.SCREEN, 0);
        addCommand(agregarObjetivo);
        agregarEjercicio = new Command("Add exercise", Command.SCREEN, 0);
        addCommand(agregarEjercicio);
        agregarObservaciones = new Command("Add note", Command.SCREEN, 0);
        addCommand(agregarObservaciones);
        terminar = new Command("Finish", Command.SCREEN, 0);
        addCommand(terminar);

        objetivos = new ChoiceGroup("Add goal", List.POPUP);
        ejercicios = new ChoiceGroup("Add exercise", List.POPUP);
        observaciones = new ChoiceGroup("Add note", List.POPUP);

        Vector vObjetivos = principal.darObjetivos();
        for (int i = 0; i < vObjetivos.size(); i++) {
            objetivos.append((String) vObjetivos.elementAt(i), null);
        }
        objetivos.setSelectedIndex(a, true);
        append(objetivos);

        Vector vEjercicios = principal.darEjercicios();
        for (int i = 0; i < vEjercicios.size(); i++) {
            Ejercicio e = (Ejercicio) vEjercicios.elementAt(i);
            ejercicios.append(e.getNombre(), null);
        }
        ejercicios.setSelectedIndex(b, true);
        append(ejercicios);

        int index = ejercicios.getSelectedIndex();
//        try {
//            if(index == 1)
//            imagenTemp = Image.createImage("/iconos/manejoRutina.png");
//            else
//                imagenTemp = Image.createImage("/iconos/ayuda.png");
//            append(imagenTemp);
//        } catch (IOException ex) {
//            ex.printStackTrace();
//        }
        Ejercicio e = (Ejercicio) vEjercicios.elementAt(index);
        imagenTemp = e.getMaquina().getImagen();
        append(imagenTemp);

        if (e.getTipo() == 1) {
            TextField nivel, duracion;
            nivel = new TextField("Level", "", 10, TextField.ANY);
            duracion = new TextField("Time", "", 10, TextField.ANY);
            append(nivel);
            append(duracion);

        } else if (e.getTipo() == 2) {
            TextField series, repeticiones;
            series = new TextField("Sets", "", 10, TextField.ANY);
            repeticiones = new TextField("Reps", "", 10, TextField.ANY);
            append(series);
            append(repeticiones);
        }

        observaciones.append("ob1", null);
        observaciones.append("ob2", null);
        observaciones.append("ob3", null);
        observaciones.setSelectedIndex(c, true);
        append(observaciones);

        //add objective
        //add excercise
        //add observation
        setItemStateListener(this);

        rutina = new TextField("Rutina", rut.darTodo(), 999999, TextField.ANY);
        append(rutina);

    }

    FormaEditarRutina(MIDletGymManager interfaz, Rutina rut) {
        super("Edit workout");

        principal = interfaz;
        this.rut = rut;
        setCommandListener(this);
        agregarObjetivo = new Command("Add goal", Command.SCREEN, 0);
        addCommand(agregarObjetivo);
        agregarEjercicio = new Command("Add exercise", Command.SCREEN, 0);
        addCommand(agregarEjercicio);
        agregarObservaciones = new Command("Add note", Command.SCREEN, 0);
        addCommand(agregarObservaciones);
        terminar = new Command("Finish", Command.SCREEN, 0);
        addCommand(terminar);
        objetivos = new ChoiceGroup("Add goal", List.POPUP);
        ejercicios = new ChoiceGroup("Add exercise", List.POPUP);
        observaciones = new ChoiceGroup("Add note", List.POPUP);

        Vector vObjetivos = principal.darObjetivos();
        for (int i = 0; i < vObjetivos.size(); i++) {
            objetivos.append((String) vObjetivos.elementAt(i), null);
        }
        objetivos.setSelectedIndex(0, true);
        append(objetivos);

        Vector vEjercicios = principal.darEjercicios();
        for (int i = 0; i < vEjercicios.size(); i++) {
            Ejercicio e = (Ejercicio) vEjercicios.elementAt(i);
            ejercicios.append(e.getNombre(), null);
        }
        ejercicios.setSelectedIndex(0, true);
        append(ejercicios);

        int index = ejercicios.getSelectedIndex();
//        try {
//            if(index == 1)
//            imagenTemp = Image.createImage("/iconos/manejoRutina.png");
//            else
//                imagenTemp = Image.createImage("/iconos/ayuda.png");
//            append(imagenTemp);
//        } catch (IOException ex) {
//            ex.printStackTrace();
//        }
        Ejercicio e = (Ejercicio) vEjercicios.elementAt(index);
        imagenTemp = e.getMaquina().getImagen();
        append(imagenTemp);

        if (e.getTipo() == 1) {
            TextField nivel, duracion;
            nivel = new TextField("Level", "", 10, TextField.ANY);
            duracion = new TextField("Time", "", 10, TextField.ANY);
            append(nivel);
            append(duracion);

        } else if (e.getTipo() == 2) {
            TextField series, repeticiones;
            series = new TextField("Sets", "", 10, TextField.ANY);
            repeticiones = new TextField("Reps", "", 10, TextField.ANY);
            append(series);
            append(repeticiones);
        }
        observaciones.append("ob1", null);
        observaciones.append("ob2", null);
        observaciones.append("ob3", null);
        observaciones.setSelectedIndex(0, true);
        append(observaciones);

        //add objective
        //add excercise
        //add observation
        setItemStateListener(this);

        rutina = new TextField("Workout", rut.darTodo(), 999999, TextField.ANY);
        append(rutina);
    }

    public void itemStateChanged(Item src) {
        if (src == ejercicios) {
            principal.mostrarFormaEnEdicion(null, rut, objetivos.getSelectedIndex(), ejercicios.getSelectedIndex(), observaciones.getSelectedIndex());
        }
    }

    public void commandAction(Command c, Displayable d) {
        if (d == this) {
            if (c == agregarObjetivo) {
                rut.addObjetivo((String) principal.darObjetivos().elementAt(objetivos.getSelectedIndex()));
                principal.mostrarFormaEnEdicion(null, rut, objetivos.getSelectedIndex(), ejercicios.getSelectedIndex(), observaciones.getSelectedIndex());
            } else if (c == agregarEjercicio) {
                rut.addEjercicio((Ejercicio) principal.darEjercicios().elementAt(ejercicios.getSelectedIndex()));
                principal.mostrarFormaEnEdicion(null, rut, objetivos.getSelectedIndex(), ejercicios.getSelectedIndex(), observaciones.getSelectedIndex());
            } else if (c == terminar) {
                rut.setNombre("rutina2");
                principal.darDeportista().getHistorialRutinas().addElement(rut);
                principal.darDeportista().setRutinaActual(rut);
                principal.mostrarFormaPrincipal(new Alert("Info", "Workout saved!", null, AlertType.INFO));
            }
        }
    }
}
